Делаем свою автоподстановку в 1С Документообороте
Механизм автоподстановки в конфигурации 1С: Документооборот дает удобную возможность при создании шаблонов процессов обработки документов указать правило для определения участника процесса, которое может меняться в зависимости от разных условий.
Например, типовые правила автоподстановки позволяют указать в шаблоне процесса, что исполнителем будет «Автор документа». А уже на этапе на запуск документа на исполнение, программа сама подставит автора конкретно взятого документа в качестве исполнителя в процесс.
Все это позволяет гибко настраивать различные процессы обработки документов.
Но, плюс к этому, конфигурация 1С: Документооборот позволяет разработчикам добавить свои собственные алгоритмы автоподстановки участников в процессах. Например, нам надо в качестве согласующего указать лицо, которое будет выбрано в документе в дополнительном реквизите «Начальник стройки». Кроме того, если оно не указано в самом документе, то попытаться взять из дополнительного реквизита «Начальник стройки» из Проекта, указанного в документе.
Как добавить свою автоподстановку
Для добавления своего алгоритма автоподстановки внесем изменения в типовой общий модуль «ШаблоныБизнесПроцессовПереопределяемый». Ищем там функцию ПолучитьСписокДоступныхФункций, вносим туда такой код:
1 2 3 4 5 6 7 8 9 |
Функция ПолучитьСписокДоступныхФункций(ИменаПредметовДляФункций) Экспорт ДоступныеФункции = Новый СписокЗначений; ДоступныеФункции.Добавить("ШаблоныБизнесПроцессовПереопределяемый.НачальникСтройки(Объект)", "Начальник стройки(автоподстановка)"); Возврат ДоступныеФункции; КонецФункции |
Здесь мы указали что для автоподстановки с именем «Начальник стройки(автоподстановка)» будет использоваться функция «НачальникСтройки».
Теперь добавляем непосредственно саму функцию «НачальникСтройки» с алгоритмом автоподстановки:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
Функция НачальникСтройки(БизнесПроцессОбъект) Экспорт Рез = Справочники.Пользователи.ПустаяСсылка(); Для Каждого СтрокаПредмета Из БизнесПроцессОбъект.Предметы Цикл Если ЗначениеЗаполнено(СтрокаПредмета.Предмет) Тогда Если ТипЗнч(СтрокаПредмета.Предмет) = Тип("СправочникСсылка.ВнутренниеДокументы") Тогда //Из документа ЗначениеРквизита = маг_ОбщегоНазначения.ЗначениеДопСвойство(СтрокаПредмета.Предмет, "Начальник стройки"); //Из проекта Если НЕ ЗначениеЗаполнено(ЗначениеРквизита) тогда ЗначениеРквизита = маг_ОбщегоНазначения.ЗначениеДопСвойство(СтрокаПредмета.Предмет.Проект, "Начальник стройки"); КонецЕсли; Если ЗначениеЗаполнено(ЗначениеРквизита) тогда Рез = ЗначениеРквизита; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; Возврат Рез; КонецФункции |
Данная функция «НачальникСтройки» приведена для примера из конкретной конфигурации. У вас вместо нее должна быть своя функция, которая реализует ваш алгоритм поиска и возврата нужного значения для автоподстановки.
В общем то и все. После этого можно проверять работу автоподстановки в пользовательском режиме.
Почему я не вижу своей автоподстановки
Но вот мы добавили реализацию механизма автоподстанови. Однако в пользовательском режиме, открывая список для выбора автоподстановки мы не обнаруживаем там своих доработок.
Например, при создании шаблона процесса Утверждения, мы хотим в поле «Кому» выбрать добавленную нами автоподстановку с именем «Начальник стройки(автоподстановка)». Открываем список выбора, находим ветку «Автоподстановка», но там нет ничего похожего на нашу автоподстановку:
Оказывается, для того что бы список выбора отобразил автоподстановки которые мы добавили сами, необходимо в контекстном меню списка выбрать команду «Обновить автоподстановки»
После выполнения этого действия, в списке выбора появиться все добавленные нами автоподстановки:
После этого можно выбирать их для использования в реквизитах процессов. Кроме того, в шаблонах некоторых процессов выбор автоподстановки возможен при вводе имени автоподстановки в самом поле по событию Автоподбор или ПриОкончанииВводаТекста.
Еще можно посмотреть
Похожие записи
- Ошибка в типовой интеграция 1С:ЗУП с 1С:Документооборот
- Пропажа индексов дескрипторов в 1С:Документообороте
- Вывод дополнительных реквизитов в несколько колонок
- Добавляем обработчик события для дополнительного реквизита 1С
- Зачем нужны Дополнительные реквизиты 1С
- Расположение дополнительных реквизитов на форме
Возможно ли добавление использования автоподстановки при выборе значения для поля «Автор»? В форме бизнес-процесса эта опция для поля автора отсутствует при выборе. Установил параметр ОтображатьАвтоподстановкиПоПроцессам в Истина — опция «Автоподстановка» появилась, но при попытке выбора выдает «Нельзя выбрать автоподстановку, которая зависит от предмета. для выбора такой автоподстановки нужно добавить предмет в шаблон процесса». Как это сделать?
Привет. В форме шаблона процесса есть закладка «Предметы процесса». Там надо добавить/создать основной предмет и выбрать тип — например «Договор» с типом «Внутренний документ». После этого программа сможет понять откуда и какие реквизиты можно взять для автоподстановки.
Предмет был указан, не помогло.
Тип поля «Автор» — ссылочный и ссылка только на справочник пользователей. Получается, для использование автоподстановки [censored] изменение типа поля на составное (как, например, в полях исполнитель, контролер)?
Поменял тип (Строка + ссылка на пользователей и до кучи на роли) в справочнике шаблонов комплексных процессов. Автоподстановка заработала, но тип поля Автор надо теперь менять в шаблонах всех бизнес-процессов: согласование, исполнение и т.д.? Как-то не очень вариант…